using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes.DomainAttributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Enums;
using System.Collections.Generic;
using System.ComponentModel;

namespace Baci.ArcGIS._CrimeAnalysisandSafetyTools
{
    /// <summary>
    /// <para>Update Features With Incident Records</para>
    /// <para>Converts a nonspatial table to point features based on x,y-coordinates or  street addresses and updates an existing dataset with the new or updated record information from the table.</para>
    /// <para>将非空间表转换为基于 x，y 坐标或街道地址的点要素，并使用表中新的或更新的记录信息更新现有数据集。</para>
    /// </summary>    
    [DisplayName("Update Features With Incident Records")]
    public class UpdateFeaturesWithIncidentRecords : AbstractGPProcess
    {
        /// <summary>
        /// 无参构造
        /// </summary>
        public UpdateFeaturesWithIncidentRecords()
        {

        }

        /// <summary>
        /// 有参构造
        /// </summary>
        /// <param name="_in_table">
        /// <para>Input Table</para>
        /// <para>The table containing the x- and y-coordinates or addresses that define the locations of the records.</para>
        /// <para>包含定义记录位置的 x 和 y 坐标或地址的表。</para>
        /// </param>
        /// <param name="_target_features">
        /// <para>Target Features</para>
        /// <para>The point feature class or feature layer to be updated.</para>
        /// <para>要更新的点要素类或要素图层。</para>
        /// </param>
        /// <param name="_location_type">
        /// <para>Location Type</para>
        /// <para><xdoc>
        ///   <para>Specifies whether features will be created using x,y-coordinates or addresses.</para>
        ///   <bulletList>
        ///     <bullet_item>Coordinates—Features will be created using the x,y-coordinates of the input record.</bullet_item><para/>
        ///     <bullet_item>Addresses—Features will be created using the address of the input record using a locator.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定是使用 x，y 坐标还是地址创建要素。</para>
        ///   <bulletList>
        ///     <bullet_item>坐标—将使用输入记录的 x，y 坐标创建要素。</bullet_item><para/>
        ///     <bullet_item>地址 - 将使用输入记录的地址和定位器创建要素。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// </param>
        public UpdateFeaturesWithIncidentRecords(object _in_table, object _target_features, _location_type_value _location_type)
        {
            this._in_table = _in_table;
            this._target_features = _target_features;
            this._location_type = _location_type;
        }
        public override string ToolboxName => "Crime Analysis and Safety Tools";

        public override string ToolName => "Update Features With Incident Records";

        public override string CallName => "ca.UpdateFeaturesWithIncidentRecords";

        public override List<string> AcceptEnvironments => ["workspace"];

        public override object[] ParameterInfo => [_in_table, _target_features, _location_type.GetGPValue(), _x_field, _y_field, _coordinate_system, _address_locator, _address_type.GetGPValue(), _address_fields, _invalid_records_table, _where_clause, _update_target.GetGPValue(), _match_fields, _in_date_field, _target_date_field, _update_matching.GetGPValue(), _update_geometry.GetGPValue(), _field_matching_type.GetGPValue(), _field_mapping, _time_format, _updated_target_features];

        /// <summary>
        /// <para>Input Table</para>
        /// <para>The table containing the x- and y-coordinates or addresses that define the locations of the records.</para>
        /// <para>包含定义记录位置的 x 和 y 坐标或地址的表。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Input Table")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _in_table { get; set; }


        /// <summary>
        /// <para>Target Features</para>
        /// <para>The point feature class or feature layer to be updated.</para>
        /// <para>要更新的点要素类或要素图层。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Target Features")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _target_features { get; set; }


        /// <summary>
        /// <para>Location Type</para>
        /// <para><xdoc>
        ///   <para>Specifies whether features will be created using x,y-coordinates or addresses.</para>
        ///   <bulletList>
        ///     <bullet_item>Coordinates—Features will be created using the x,y-coordinates of the input record.</bullet_item><para/>
        ///     <bullet_item>Addresses—Features will be created using the address of the input record using a locator.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定是使用 x，y 坐标还是地址创建要素。</para>
        ///   <bulletList>
        ///     <bullet_item>坐标—将使用输入记录的 x，y 坐标创建要素。</bullet_item><para/>
        ///     <bullet_item>地址 - 将使用输入记录的地址和定位器创建要素。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Location Type")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public _location_type_value _location_type { get; set; }

        public enum _location_type_value
        {
            /// <summary>
            /// <para>Coordinates</para>
            /// <para>Coordinates—Features will be created using the x,y-coordinates of the input record.</para>
            /// <para>坐标—将使用输入记录的 x，y 坐标创建要素。</para>
            /// </summary>
            [Description("Coordinates")]
            [GPEnumValue("COORDINATES")]
            _COORDINATES,

            /// <summary>
            /// <para>Addresses</para>
            /// <para>Addresses—Features will be created using the address of the input record using a locator.</para>
            /// <para>地址 - 将使用输入记录的地址和定位器创建要素。</para>
            /// </summary>
            [Description("Addresses")]
            [GPEnumValue("ADDRESSES")]
            _ADDRESSES,

        }

        /// <summary>
        /// <para>X Field</para>
        /// <para><xdoc>
        ///   <para>The field in the input table that contains the x-coordinates (or longitude).</para>
        ///   <para>This parameter is only enabled when the Location Type parameter is set to Coordinates.</para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>输入表中包含 x 坐标（或经度）的字段。</para>
        ///   <para>仅当“位置类型”参数设置为“坐标”时，才会启用此参数。</para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("X Field")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _x_field { get; set; } = null;


        /// <summary>
        /// <para>Y Field</para>
        /// <para><xdoc>
        ///   <para>The field in the input table that contains the y-coordinates (or latitude).</para>
        ///   <para>This parameter is only enabled when the Location Type parameter is set to Coordinates.</para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>输入表中包含 y 坐标（或纬度）的字段。</para>
        ///   <para>仅当“位置类型”参数设置为“坐标”时，才会启用此参数。</para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Y Field")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _y_field { get; set; } = null;


        /// <summary>
        /// <para>Coordinate System</para>
        /// <para><xdoc>
        ///   <para>The coordinate system of the x- and y-coordinates.</para>
        ///   <para>This parameter is only enabled when the Location Type parameter is set to Coordinates.</para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>x 和 y 坐标的坐标系。</para>
        ///   <para>仅当“位置类型”参数设置为“坐标”时，才会启用此参数。</para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Coordinate System")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _coordinate_system { get; set; } = null;


        /// <summary>
        /// <para>Address Locator</para>
        /// <para><xdoc>
        ///   <para>The address locator to use to geocode the table of addresses.</para>
        ///   <para>When this parameter is set to use ArcGIS World Geocoding Service, this operation may consume credits.</para>
        ///   <para>When using a local address locator, adding the .loc extension after the locator name at the end of the locator path is optional.</para>
        ///   <para>This parameter is only enabled when the Location Type parameter is set to Addresses.</para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>用于对地址表进行地理编码的地址定位器。</para>
        ///   <para>当此参数设置为使用 ArcGIS World Geocoding Service 时，此操作可能会消耗配额。</para>
        ///   <para>使用本地地址定位器时，在定位器路径末尾的定位器名称后添加 .loc 扩展名是可选的。</para>
        ///   <para>仅当“位置类型”参数设置为“地址”时，才会启用此参数。</para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Address Locator")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _address_locator { get; set; } = null;


        /// <summary>
        /// <para>Address Type</para>
        /// <para><xdoc>
        ///   <para>Specifies how address fields used by the address locator will be mapped to fields in the input table of addresses.</para>
        ///   <bulletList>
        ///     <bullet_item>Multiple Fields—Addresses are split into multiple fields.</bullet_item><para/>
        ///     <bullet_item>Single Field—Addresses are contained in one field.</bullet_item><para/>
        ///   </bulletList>
        ///   <para>Select Single Field if the complete address is stored in one field in the input table, for example, 303 Peachtree St NE, Atlanta, GA 30308. Select Multiple Fields if the input addresses are split into multiple fields such as Address, City, State, and ZIP for a general United States address.</para>
        ///   <para>This parameter is only enabled when the Location Type parameter is set to Addresses.</para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定地址定位器使用的地址字段如何映射到地址输入表中的字段。</para>
        ///   <bulletList>
        ///     <bullet_item>多个字段 - 地址被拆分为多个字段。</bullet_item><para/>
        ///     <bullet_item>单个字段 - 地址包含在一个字段中。</bullet_item><para/>
        ///   </bulletList>
        ///   <para>如果完整地址存储在输入表中的一个字段中，请选择“单个字段”，例如，303 Peachtree St NE， Atlanta， GA 30308。如果输入地址拆分为多个字段，例如美国通用地址的地址、城市、州和 ZIP，请选择多个字段。</para>
        ///   <para>仅当“位置类型”参数设置为“地址”时，才会启用此参数。</para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Address Type")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _address_type_value _address_type { get; set; } = _address_type_value._MULTI_FIELD_ADDRESS;

        public enum _address_type_value
        {
            /// <summary>
            /// <para>Single Field</para>
            /// <para>Single Field—Addresses are contained in one field.</para>
            /// <para>单个字段 - 地址包含在一个字段中。</para>
            /// </summary>
            [Description("Single Field")]
            [GPEnumValue("SINGLE_FIELD_ADDRESS")]
            _SINGLE_FIELD_ADDRESS,

            /// <summary>
            /// <para>Multiple Fields</para>
            /// <para>Multiple Fields—Addresses are split into multiple fields.</para>
            /// <para>多个字段 - 地址被拆分为多个字段。</para>
            /// </summary>
            [Description("Multiple Fields")]
            [GPEnumValue("MULTI_FIELD_ADDRESS")]
            _MULTI_FIELD_ADDRESS,

        }

        /// <summary>
        /// <para>Address Fields</para>
        /// <para><xdoc>
        ///   <para>The input table fields that correspond to the locator address fields of the address locator.</para>
        ///   <para>Some locators support multiple input address fields, such as Address, Address2, and Address3. In this case, the address component can be separated into multiple fields, and the address fields will be concatenated at the time of geocoding. For example, 100, Main st, and Apt 140 across three fields, or 100 Main st and Apt 140 across two fields, both become 100 Main st Apt 140 when geocoding.</para>
        ///   <para>If you choose not to map an optional input address field used by the address locator to a field in the input table of addresses, specify that there is no mapping by leaving the field name blank.</para>
        ///   <para>This parameter is only active when the Location Type parameter is set to Addresses.</para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>与地址定位器的定位器地址字段对应的输入表字段。</para>
        ///   <para>某些定位器支持多个输入地址字段，例如地址、地址 2 和地址 3。在这种情况下，地址组件可以分成多个字段，并且地址字段将在地理编码时连接起来。例如，地理编码时，跨三个字段的 100、Main st 和 Apt 140，或跨两个字段的 100 Main st 和 Apt 140，都变为 100 Main st Apt 140。</para>
        ///   <para>如果选择不将地址定位器使用的可选输入地址字段映射到地址输入表中的字段，请将字段名称留空，以指定没有映射。</para>
        ///   <para>仅当“位置类型”参数设置为“地址”时，此参数才处于活动状态。</para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Address Fields")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _address_fields { get; set; } = null;


        /// <summary>
        /// <para>Invalid Records Table</para>
        /// <para>The output table containing a list of invalid records and associated invalidation codes.</para>
        /// <para>包含无效记录和关联失效代码列表的输出表。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Invalid Records Table")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _invalid_records_table { get; set; } = null;


        /// <summary>
        /// <para>Expression</para>
        /// <para><xdoc>
        ///   <para>The SQL expression used to select a subset of the input datasets' records. If multiple input datasets are specified, they will all be evaluated using the expression. If no records match the expression for an input dataset, no records from that dataset will be appended to the target.</para>
        ///   <para>For more information about SQL syntax, see SQL reference for query expressions used in ArcGIS.</para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>用于选择输入数据集记录的子集的 SQL 表达式。如果指定了多个输入数据集，则将使用表达式计算它们。如果没有记录与输入数据集的表达式匹配，则不会将该数据集中的任何记录追加到目标中。</para>
        ///   <para>有关 SQL 语法的详细信息，请参阅 ArcGIS 中使用的查询表达式的 SQL 参考。</para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Expression")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _where_clause { get; set; } = null;


        /// <summary>
        /// <para>Update Existing Target Features</para>
        /// <para><xdoc>
        ///   <para>Specifies whether existing records will be updated in the Target Features parameter.</para>
        ///   <bulletList>
        ///     <bullet_item>Checked—Records from the Input Table parameter will be updated in the Target Features parameter if they exist there.</bullet_item><para/>
        ///     <bullet_item>Unchecked—Records from the Input Table parameter will be appended to the Target Features parameter. This is the default.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定是否在目标要素参数中更新现有记录。</para>
        ///   <bulletList>
        ///     <bullet_item>选中 - 输入表参数中的记录将在目标要素参数中更新（如果存在）。</bullet_item><para/>
        ///     <bullet_item>未选中 - 输入表参数中的记录将追加到目标要素参数中。这是默认设置。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Update Existing Target Features")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _update_target_value _update_target { get; set; } = _update_target_value._false;

        public enum _update_target_value
        {
            /// <summary>
            /// <para>UPDATE</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("UPDATE")]
            [GPEnumValue("true")]
            _true,

            /// <summary>
            /// <para>APPEND</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("APPEND")]
            [GPEnumValue("false")]
            _false,

        }

        /// <summary>
        /// <para>Match Fields</para>
        /// <para><xdoc>
        ///   <para>The ID field or fields that will be used to determine matches between the Input Table values and the Target Features values.</para>
        ///   <para>This parameter is only enabled when the Update Existing Target Features parameter is checked.</para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>将用于确定输入表值与目标要素值之间的匹配的一个或多个 ID 字段。</para>
        ///   <para>仅当选中更新现有目标要素参数时，才会启用此参数。</para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Match Fields")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _match_fields { get; set; } = null;


        /// <summary>
        /// <para>Input Table Last Modified Date Field</para>
        /// <para><xdoc>
        ///   <para>The last modified date of the Input Features records.</para>
        ///   <para>Date and string field types are supported.</para>
        ///   <para>This parameter is only enabled when the Update Existing Target Features parameter is checked.</para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>输入要素记录的最后修改日期。</para>
        ///   <para>支持日期和字符串字段类型。</para>
        ///   <para>仅当选中更新现有目标要素参数时，才会启用此参数。</para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Input Table Last Modified Date Field")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _in_date_field { get; set; } = null;


        /// <summary>
        /// <para>Target Features Last Modified Date Field</para>
        /// <para><xdoc>
        ///   <para>The field containing the last modified date of the Target Features records.</para>
        ///   <para>This field must be a date field type.</para>
        ///   <para>This parameter is only enabled when the Update Existing Target Features parameter is checked.</para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>包含目标要素记录的上次修改日期的字段。</para>
        ///   <para>此字段必须是日期字段类型。</para>
        ///   <para>仅当选中更新现有目标要素参数时，才会启用此参数。</para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Target Features Last Modified Date Field")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _target_date_field { get; set; } = null;


        /// <summary>
        /// <para>Update Only Matching Features</para>
        /// <para><xdoc>
        ///   <para>Specifies whether only existing records will be updated or existing records will be updated and new records will be added.</para>
        ///   <bulletList>
        ///     <bullet_item>Checked—Only existing records will be updated.</bullet_item><para/>
        ///     <bullet_item>Unchecked—Existing records will be updated and new records will be added. This is default.</bullet_item><para/>
        ///   </bulletList>
        ///   <para>This parameter is only active when the Update Existing Target Features parameter is checked.</para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定是仅更新现有记录，还是更新现有记录并添加新记录。</para>
        ///   <bulletList>
        ///     <bullet_item>选中 - 仅更新现有记录。</bullet_item><para/>
        ///     <bullet_item>未选中 - 将更新现有记录并添加新记录。这是默认设置。</bullet_item><para/>
        ///   </bulletList>
        ///   <para>仅当选中更新现有目标要素参数时，此参数才处于活动状态。</para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Update Only Matching Features")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _update_matching_value _update_matching { get; set; } = _update_matching_value._false;

        public enum _update_matching_value
        {
            /// <summary>
            /// <para>UPDATE_MATCHING_ONLY</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("UPDATE_MATCHING_ONLY")]
            [GPEnumValue("true")]
            _true,

            /// <summary>
            /// <para>UPSERT</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("UPSERT")]
            [GPEnumValue("false")]
            _false,

        }

        /// <summary>
        /// <para>Update Geometry for Existing Features</para>
        /// <para><xdoc>
        ///   <para>Specifies whether the geometry of existing features will be updated.</para>
        ///   <bulletList>
        ///     <bullet_item>Checked—The geometry of existing records will be updated when the geometry information from the Input Table parameter is different than the geometry of the Target Features parameter. This is the default.</bullet_item><para/>
        ///     <bullet_item>Unchecked—The geometry of existing records will not be updated.</bullet_item><para/>
        ///   </bulletList>
        ///   <para>This parameter is only enabled when the Update Existing Target Features parameter is checked.</para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定是否更新现有特征的几何。</para>
        ///   <bulletList>
        ///     <bullet_item>选中 - 当输入表参数中的几何信息与目标要素参数的几何不同时，将更新现有记录的几何。这是默认设置。</bullet_item><para/>
        ///     <bullet_item>未选中 - 不会更新现有记录的几何。</bullet_item><para/>
        ///   </bulletList>
        ///   <para>仅当选中更新现有目标要素参数时，才会启用此参数。</para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Update Geometry for Existing Features")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _update_geometry_value _update_geometry { get; set; } = _update_geometry_value._true;

        public enum _update_geometry_value
        {
            /// <summary>
            /// <para>UPDATE_GEOMETRY</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("UPDATE_GEOMETRY")]
            [GPEnumValue("true")]
            _true,

            /// <summary>
            /// <para>KEEP_GEOMETRY</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("KEEP_GEOMETRY")]
            [GPEnumValue("false")]
            _false,

        }

        /// <summary>
        /// <para>Field Matching Type</para>
        /// <para><xdoc>
        ///   <para>Specifies whether the fields of the input table must match the fields of the target features for data to be appended.</para>
        ///   <bulletList>
        ///     <bullet_item>Input fields must match target fields—Fields from the input dataset match the fields of the target dataset. Fields that do not match will be ignored. This is the default</bullet_item><para/>
        ///     <bullet_item>Use the field map to reconcile field differences—Fields from the input dataset do not need to match the fields of the target dataset. Fields from the input dataset that do not match the fields of the target dataset will not be mapped to the target dataset unless the mapping is explicitly set in the Field Map parameter.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定输入表的字段是否必须与要追加的数据的目标要素的字段匹配。</para>
        ///   <bulletList>
        ///     <bullet_item>输入字段必须与目标字段匹配 - 输入数据集中的字段与目标数据集的字段匹配。不匹配的字段将被忽略。这是默认设置</bullet_item><para/>
        ///     <bullet_item>使用字段地图协调字段差异 - 输入数据集中的字段不需要与目标数据集的字段匹配。除非在字段映射参数中显式设置映射，否则输入数据集中与目标数据集的字段不匹配的字段将不会映射到目标数据集。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Field Matching Type")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _field_matching_type_value _field_matching_type { get; set; } = _field_matching_type_value._AUTOMATIC;

        public enum _field_matching_type_value
        {
            /// <summary>
            /// <para>Input fields must match target fields</para>
            /// <para>Input fields must match target fields—Fields from the input dataset match the fields of the target dataset. Fields that do not match will be ignored. This is the default</para>
            /// <para>输入字段必须与目标字段匹配 - 输入数据集中的字段与目标数据集的字段匹配。不匹配的字段将被忽略。这是默认设置</para>
            /// </summary>
            [Description("Input fields must match target fields")]
            [GPEnumValue("AUTOMATIC")]
            _AUTOMATIC,

            /// <summary>
            /// <para>Use the field map to reconcile field differences</para>
            /// <para>Use the field map to reconcile field differences—Fields from the input dataset do not need to match the fields of the target dataset. Fields from the input dataset that do not match the fields of the target dataset will not be mapped to the target dataset unless the mapping is explicitly set in the Field Map parameter.</para>
            /// <para>使用字段地图协调字段差异 - 输入数据集中的字段不需要与目标数据集的字段匹配。除非在字段映射参数中显式设置映射，否则输入数据集中与目标数据集的字段不匹配的字段将不会映射到目标数据集。</para>
            /// </summary>
            [Description("Use the field map to reconcile field differences")]
            [GPEnumValue("FIELD_MAP")]
            _FIELD_MAP,

        }

        /// <summary>
        /// <para>Field Map</para>
        /// <para><xdoc>
        ///   <para>Controls how the attribute fields from the input table will be transferred or mapped to the target features.</para>
        ///   <para>This parameter is only active if the Field Matching Type parameter is set to Use the field map to reconcile field differences.</para>
        ///   <para>Because the input table values are appended to an existing target feature that has predefined fields, you cannot add, remove, or change the type of the fields in the field map. You can, however, set merge rules for each output field.</para>
        ///   <para>Merge rules allow you to specify how values from two or more input fields are merged or combined into a single output value. There are several merge rules you can use to determine how the output field will be populated with values.
        ///   <bulletList>
        ///     <bullet_item>First—Use the input fields' first value.  </bullet_item><para/>
        ///     <bullet_item>Last—Use the input fields' last value.  </bullet_item><para/>
        ///     <bullet_item>Join—Concatenate (join) the input field values.  </bullet_item><para/>
        ///     <bullet_item>Sum—Calculate the total of the input field values.  </bullet_item><para/>
        ///     <bullet_item>Mean—Calculate the mean (average) of the input field values.  </bullet_item><para/>
        ///     <bullet_item>Median—Calculate the median (middle) of the input field values.  </bullet_item><para/>
        ///     <bullet_item>Mode—Use the value with the highest frequency.  </bullet_item><para/>
        ///     <bullet_item>Min—Use the minimum value of all the input field values.  </bullet_item><para/>
        ///     <bullet_item>Max—Use the maximum value of all the input field values.  </bullet_item><para/>
        ///     <bullet_item>Standard deviation—Use the standard deviation classification method on all the input field values.  </bullet_item><para/>
        ///     <bullet_item>Count—Find the number of records included in the calculation.  </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>控制如何将输入表中的属性字段传输或映射到目标要素。</para>
        ///   <para>仅当字段匹配类型参数设置为使用字段映射协调字段差异时，此参数才处于活动状态。</para>
        ///   <para>由于输入表值将追加到具有预定义字段的现有目标要素，因此无法添加、移除或更改字段地图中的字段类型。但是，您可以为每个输出字段设置合并规则。</para>
        /// <para>合并规则允许您指定如何将两个或多个输入字段中的值合并或组合为单个输出值。您可以使用多个合并规则来确定如何使用值填充输出字段。
        ///   <bulletList>
        ///     <bullet_item>第一 - 使用输入字段的第一个值。</bullet_item><para/>
        ///     <bullet_item>最后 （Last） - 使用输入字段的最后一个值。</bullet_item><para/>
        ///     <bullet_item>连接 （Join） - 连接（连接）输入字段值。</bullet_item><para/>
        ///     <bullet_item>求和 （Sum） - 计算输入字段值的总和。</bullet_item><para/>
        ///     <bullet_item>均值 （Mean） - 计算输入字段值的平均值（平均值）。</bullet_item><para/>
        ///     <bullet_item>中位数 - 计算输入字段值的中位数（中间值）。</bullet_item><para/>
        ///     <bullet_item>模式 （Mode） - 使用频率最高的值。</bullet_item><para/>
        ///     <bullet_item>最小值 （Min） - 使用所有输入字段值的最小值。</bullet_item><para/>
        ///     <bullet_item>最大值 （Max） - 使用所有输入字段值的最大值。</bullet_item><para/>
        ///     <bullet_item>标准差 - 对所有输入字段值使用标准差分类方法。</bullet_item><para/>
        ///     <bullet_item>计数 （Count） - 查找计算中包含的记录数。</bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Field Map")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _field_mapping { get; set; } = null;


        /// <summary>
        /// <para>Time Format</para>
        /// <para><xdoc>
        ///   <para>The format of the input field containing the time values. The type can be short, long, float, double, text, or date. You can either choose a standard time format from the drop-down list or enter a custom format.
        ///   <para>The format strings are case sensitive.</para>
        ///   <bulletList>
        ///     <bullet_item>If the data type of the time field is date, no time format is required.  </bullet_item><para/>
        ///     <bullet_item>If the data type of the time field is numeric (Short, Long, Float, or Double), a list of standard numeric time formats is provided in the drop-down list.  </bullet_item><para/>
        ///     <bullet_item>If the data type of the time field is string, a list of standard string time formats is provided in the drop-down list. For string fields, you can also choose to specify a custom time format. For example, the time values may have been stored in a string field in one of the standard formats such as yyyy/MM/dd HH:mm:ss or in a custom format such as dd/MM/yyyy HH:mm:ss. For the custom format, you can also specify the a.m., p.m. designator. Some commonly used formats are listed below:
        ///       <bulletList>
        ///         <bullet_item>yyyy - Year represented by four digits.      </bullet_item><para/>
        ///         <bullet_item>MM - Month as digits with leading zero for single-digit months.      </bullet_item><para/>
        ///         <bullet_item>MMM - Month as a three-letter abbreviation.      </bullet_item><para/>
        ///         <bullet_item>dd - Day of month as digits with leading zero for single-digit days.      </bullet_item><para/>
        ///         <bullet_item>ddd - Day of week as a three-letter abbreviation.      </bullet_item><para/>
        ///         <bullet_item>hh - Hours with leading zero for single-digit hours; 12-hour clock.      </bullet_item><para/>
        ///         <bullet_item>HH - Hours with leading zero for single-digit hours; 24-hour clock.      </bullet_item><para/>
        ///         <bullet_item>mm - Minutes with leading zero for single-digit minutes.      </bullet_item><para/>
        ///         <bullet_item>ss - Seconds with leading zero for single-digit seconds.      </bullet_item><para/>
        ///         <bullet_item>t - One character time marker string, such as A or P.      </bullet_item><para/>
        ///         <bullet_item>tt - Multicharacter time marker string, such as AM or PM.      </bullet_item><para/>
        ///         <bullet_item>unix_us - Unix time in microseconds.      </bullet_item><para/>
        ///         <bullet_item>unix_ms - Unix time in milliseconds.      </bullet_item><para/>
        ///         <bullet_item>unix_s - Unix time in seconds.      </bullet_item><para/>
        ///         <bullet_item>unix_hex - Unix time in hexadecimal.      </bullet_item><para/>
        ///       </bulletList>
        ///     </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        ///   <para>This parameter is only active when the Input Table Last Modified Date parameter value is a text field and the Target Features Last Modified Date Field parameter value is a date field, or the Field Map parameter input value is a text field and the output value is a date field.</para>
        /// </xdoc></para>
        /// <para><xdoc>
        /// <para>包含时间值的输入字段的格式。类型可以是短、长、浮点、双精度、文本或日期。您可以从下拉列表中选择标准时间格式，也可以输入自定义格式。
        ///   <para>格式字符串区分大小写。</para>
        ///   <bulletList>
        ///     <bullet_item>如果时间字段的数据类型为日期，则不需要时间格式。</bullet_item><para/>
        ///     <bullet_item>如果时间字段的数据类型为数值（空头、长头、浮点数或双精度），则下拉列表中会提供标准数字时间格式的列表。</bullet_item><para/>
        /// <bullet_item>如果时间字段的数据类型为字符串，则下拉列表中会提供标准字符串时间格式的列表。对于字符串字段，您还可以选择指定自定义时间格式。例如，时间值可能已以标准格式之一（如 yyyy/MM/dd HH：mm：ss）或自定义格式（如 dd/MM/yyyy HH：mm：ss）存储在字符串字段中。对于自定义格式，您还可以指定上午 （a.m.） 和下午 （p.m.） 指示符。下面列出了一些常用的格式：
        ///       <bulletList>
        ///         <bullet_item>yyyy - 用四位数字表示的年份。</bullet_item><para/>
        ///         <bullet_item>MM - 以数字表示的月份，前导为零表示个位数月份。</bullet_item><para/>
        ///         <bullet_item>MMM - 月为三个字母的缩写。</bullet_item><para/>
        ///         <bullet_item>dd - 以数字表示的月份中的某一天，前导为零表示个位数的天数。</bullet_item><para/>
        ///         <bullet_item>ddd - 星期几，为三个字母的缩写。</bullet_item><para/>
        ///         <bullet_item>hh - 前导零的小时数，表示个位数的小时数;12 小时制。     </bullet_item><para/>
        ///         <bullet_item>HH - 前导零的小时数，表示个位数的小时数;24小时制。     </bullet_item><para/>
        ///         <bullet_item>mm - 前导零的分钟数，表示个位数的分钟数。</bullet_item><para/>
        ///         <bullet_item>ss - 前导零的秒数，表示个位数秒。</bullet_item><para/>
        ///         <bullet_item>t - 一个字符的时间标记字符串，例如 A 或 P。</bullet_item><para/>
        ///         <bullet_item>tt - 多字符时间标记字符串，例如 AM 或 PM。</bullet_item><para/>
        ///         <bullet_item>unix_us - 以微秒为单位的 Unix 时间。</bullet_item><para/>
        ///         <bullet_item>unix_ms - 以毫秒为单位的 Unix 时间。</bullet_item><para/>
        ///         <bullet_item>unix_s - Unix 时间（以秒为单位）。</bullet_item><para/>
        ///         <bullet_item>unix_hex - 十六进制的 Unix 时间。</bullet_item><para/>
        ///       </bulletList>
        ///     </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        ///   <para>仅当输入表上次修改日期参数值为文本字段且目标要素上次修改日期字段参数值为日期字段，或者字段地图参数输入值为文本字段且输出值为日期字段时，此参数才处于活动状态。</para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Time Format")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _time_format { get; set; } = null;


        /// <summary>
        /// <para>Updated Target Features</para>
        /// <para></para>
        /// <para></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Updated Target Features")]
        [Description("")]
        [Option(OptionTypeEnum.derived)]
        public object _updated_target_features { get; set; }


        public UpdateFeaturesWithIncidentRecords SetEnv(object workspace = null)
        {
            base.SetEnv(workspace: workspace);
            return this;
        }

    }

}